import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'
import './assets/icons/index'
import './assets/css/global.css'
//第一步导入axios
import axios from "axios";

//导入
import moment from "moment";
Vue.prototype.moment=moment;
//挂载
// Vue.prototype.addDateRange = addDateRange

import {formatDict,formatDict2,selectDictLabel, addDateRange, handleTree, getAge, getCurrentTimeType} from './utils/his-util'
//挂载
Vue.prototype.formatDict=formatDict
Vue.prototype.formatDict2=formatDict2

//-----------------------------------------------------------ZXJ
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.addDateRange = addDateRange
//Vue.prototype.getDataByType = getDataByType // 加载全局的根据字典类型查询字典的方法[基本每个页面都要使用]
Vue.prototype.handleTree = handleTree // 挂载全局的构造树的JSON的方法
Vue.prototype.getAge = getAge// 挂载全局的根据出生年月日计算年龄的方法
Vue.prototype.getCurrentTimeType = getCurrentTimeType// 挂载全局计算时段的方法

// 注册mavon-editor组件
import mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
Vue.use(mavonEditor);

axios.defaults.baseURL="http://192.168.0.146:8886";

Vue.config.productionTip = false
//设置axios请求拦截器
axios.interceptors.request.use(config=>{
      //从sessionStorage获取令牌信息
     var token = sessionStorage.getItem("token");
     //判断是否获取token 只要token有值则返回true
     if(token){
           //把token信息放入请求头种
           config.headers.token=token;
     }
     return config;
})

//响应拦截器
axios.interceptors.response.use(response=>{
      if(response.data.code===200){
          return response;
      }else if(response.data.code===401){
          Vue.prototype.$message.error("请先登录")
          vm.$router.push("/login")
          return Promise.reject(new Error())
      }else{
          Vue.prototype.$message.error("响应错误")
          return Promise.reject(new Error())
      }
},error => {
    return Promise.reject(error)
})

//第二步把axios对象挂载到Vue对象
Vue.prototype.$http=axios


// 设置路由守卫 to:目标路由   from:从哪个路由   next:放行到目标路由  跳转到指定路径
router.beforeEach(((to, from, next) => {
        var path = to.path;
        if(path==="/" || path==="/login"){
             return next();
        }

        var token = sessionStorage.getItem("token");
        if(token){
            return next();
        }
         return next("/");
}))



//
var vm = new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
